home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / txf / src / txflog.c < prev    next >
C/C++ Source or Header  |  1994-05-05  |  2KB  |  97 lines

  1. /*====================================================================
  2.  *
  3.  * TXF matchstr module
  4.  *
  5.  *====================================================================
  6.  *                                   copyright(C) 1992-1994 T.Nakatani
  7.  *====================================================================
  8.  */
  9. #include "txf.h"
  10.  
  11. int matchstr(char *form, char far *txtptr)
  12. {
  13.     char far *logtmp;
  14.     char *strtmp;
  15.     int i, trueflg = 0, count = 0;
  16.  
  17.     logtmp = txtptr;
  18.     strtmp = form;
  19.     while ((*strtmp != NUL) && (*logtmp != 0x0a)) {
  20.         trueflg = FALSE;
  21.         switch (*strtmp) {
  22.         case '%':
  23.             if (isdigit(*logtmp) || (*logtmp == ' ')) {
  24.                 trueflg = TRUE;
  25.             }
  26.             break;
  27.         case '*':
  28.             if (isalpha(*logtmp)) {
  29.                 trueflg = TRUE;
  30.             }
  31.             break;
  32.         case '&':
  33.             if (isalpha(*logtmp) || isdigit(*logtmp)) {
  34.                 trueflg = TRUE;
  35.             }
  36.             break;
  37.         case '_':
  38.             if (*logtmp == ' ') {
  39.                 trueflg = TRUE;
  40.             }
  41.             break;
  42.         case '$':
  43.             trueflg = TRUE;
  44.             break;
  45.         case 0x27:
  46.             strtmp++;
  47.             if (*logtmp == *strtmp) {
  48.                 trueflg = TRUE;
  49.             }
  50.             break;
  51.         case '^':
  52.             strtmp++;
  53.             count = ((*strtmp) - ('0'));
  54.             strtmp++;
  55.             while (trueflg != TRUE) {
  56.                 for (i = 0; i < count; i++) {
  57.                     if (*(logtmp + i) != *(strtmp + i)) {
  58.                         break;
  59.                     }
  60.                 }
  61.                 if (i != count) {
  62.                     logtmp++;
  63.                     if (*logtmp == 0x0a) {
  64.                         break;
  65.                     }
  66.                 }
  67.                 else {
  68.                     trueflg = TRUE;
  69.                 }
  70.             }
  71.             break;
  72.         default:
  73.             if (islower(*strtmp)) {
  74.                 if (tolower(*logtmp) == *strtmp) {
  75.                     trueflg = TRUE;
  76.                 }
  77.             }
  78.             else {
  79.                 if (*logtmp == *strtmp) {
  80.                     trueflg = TRUE;
  81.                 }
  82.             }
  83.         }
  84. /*        printf("matchstr:%c,%c:", *strtmp, *logtmp);    */
  85.         if (trueflg != TRUE) {
  86. /*            puts("NG!");                                */
  87.             return (FALSE);
  88.         }
  89. /*        puts("GOOD!");                                    */
  90.         strtmp++;
  91.         logtmp++;
  92.     }
  93.     return (TRUE);
  94.  
  95. }
  96.  
  97.